This page has been superceded by a wiki version of this example: TwelveDaysOfChristmasExampleOne
/*
The Twelve Days of Christmas
File: twelve.d
Author: Justin C. Calvarese
Website: http://jcc_7.tripod.com/d/
License: Public Domain
Produces the lyrics of the 12 Days of Christmas (all twelve verses)
*/
const char[] I1 = "On the ";
const char[] I2 = " day of Christmas, my true love gave to me:";
const char[] D1 = "A Partridge in a Pear Tree.";
const char[] D2 = "Two Turtle Doves, and";
const char[] D3 = "Three French Hens,";
const char[] D4 = "Four Calling Birds,";
const char[] D5 = "Five Golden Rings,";
const char[] D6 = "Six Geese a Laying,";
const char[] D7 = "Seven Swans a Swimming,";
const char[] D8 = "Eight Maids a Milking,";
const char[] D9 = "Nine Ladies Dancing,";
const char[] D10 = "Ten Lords a Leaping,";
const char[] D11 = "Eleven Pipers Piping,";
const char[] D12 = "Twelve Drummers Drumming,";
void println(char[] s)
{
printf(cast(char*) (s ~ "\n\0")); /* A simple \n\0 (without quotes) is valid in D, but d2html won't handle it */
}
int main (char[][] args)
{
char[] s;
for (int e=1; e<=12; e++)
{
for (int d=e; d>0; d--)
{
s = "";
if (d==e)
{
s = I1;
switch(d)
{
case 1: s ~= "first"; break;
case 2: s ~= "second"; break;
case 3: s ~= "third"; break;
case 4: s ~= "fourth"; break;
case 5: s ~= "fifth"; break;
case 6: s ~= "sixth"; break;
case 7: s ~= "seventh"; break;
case 8: s ~= "eighth"; break;
case 9: s ~= "ninth"; break;
case 10: s ~= "tenth"; break;
case 11: s ~= "eleventh"; break;
default: s ~= "twelveth"; break;
}
s ~= I2;
println(s);
}
switch (d)
{
case 12: println(D12); break;
case 11: println(D11); break;
case 10: println(D10); break;
case 9: println(D9); break;
case 8: println(D8); break;
case 7: println(D7); break;
case 6: println(D6); break;
case 5: println(D5); break;
case 4: println(D4); break;
case 3: println(D3); break;
case 2: println(D2); break;
default: println(D1); println(""); break;
}
}
}
return 0;
}